GtkIconHelper: Add set_window()
authorAlexander Larsson <alexl@redhat.com>
Mon, 24 Jun 2013 12:05:27 +0000 (14:05 +0200)
committerAlexander Larsson <alexl@redhat.com>
Wed, 3 Jul 2013 12:39:25 +0000 (14:39 +0200)
This is a hint on where the icon will be drawn. It
will allow us to pre-allocate cairo surfaces for the right
target.

gtk/gtkiconhelper.c
gtk/gtkiconhelperprivate.h

index 1ec7b850e7389abede34a115dd5ff1be15b87359..629f00782765559aa095426bb4fd27dd8cdc4c4a 100644 (file)
@@ -26,6 +26,8 @@ G_DEFINE_TYPE (GtkIconHelper, _gtk_icon_helper, G_TYPE_OBJECT)
 struct _GtkIconHelperPrivate {
   GtkImageType storage_type;
 
+  GdkWindow *window;
+
   GdkPixbuf *orig_pixbuf;
   GdkPixbufAnimation *animation;
   GIcon *gicon;
@@ -50,6 +52,7 @@ _gtk_icon_helper_clear (GtkIconHelper *self)
   g_clear_object (&self->priv->orig_pixbuf);
   g_clear_object (&self->priv->animation);
   g_clear_object (&self->priv->rendered_pixbuf);
+  g_clear_object (&self->priv->window);
 
   if (self->priv->icon_set != NULL)
     {
@@ -76,6 +79,17 @@ _gtk_icon_helper_invalidate (GtkIconHelper *self)
   g_clear_object (&self->priv->rendered_pixbuf);
 }
 
+void
+ _gtk_icon_helper_set_window (GtkIconHelper *self,
+                             GdkWindow *window)
+{
+  if (window)
+    g_object_ref (window);
+  g_clear_object (&self->priv->window);
+  self->priv->window = window;
+
+}
+
 static void
 gtk_icon_helper_finalize (GObject *object)
 {
index c2b9f0804fc1f35ecf06e16950ea355f7784632f..10467be950b038de28b741ffe73cebe5a26f1467 100644 (file)
@@ -70,6 +70,8 @@ GtkIconHelper *_gtk_icon_helper_new (void);
 
 void _gtk_icon_helper_clear (GtkIconHelper *self);
 void _gtk_icon_helper_invalidate (GtkIconHelper *self);
+void _gtk_icon_helper_set_window (GtkIconHelper *self,
+                                 GdkWindow *window);
 
 gboolean _gtk_icon_helper_get_is_empty (GtkIconHelper *self);